package com.huterox.todoscheduler.config;

import com.huterox.todoscheduler.common.ConfigurationParse;
import com.huterox.todoscheduler.core.beans.TodoListBean;
import com.huterox.todoscheduler.core.enumType.TodoListTempleCreateType;
import com.huterox.todoscheduler.core.global.TodoListTemplateMap;
import com.huterox.todoscheduler.core.wapper.TodoListWrapper;

import java.io.Serializable;

/**
 * 暴露出来，给用户使用的配置
 * */
public class ConfigurationByUser implements Serializable {

    //设置新的配置解析引擎（现在我们默认的就是解析properties）
    //等那天翻身了，做一个拓展，用户可以自己选配。
    public void setConfigurationParse(ConfigurationParse configurationParse){
        ConfigEngine.corePart.put(ConfigurationParse.class,configurationParse);
    }

    //手动代码添加任务清单，最推荐的就是，随便找个类作为清单，然后打上TodoList注解
    public void addTodoList(TodoListBean todoListBean){
        TodoListWrapper todoListWrapper = new TodoListWrapper();
        todoListWrapper.setTodoListName(todoListBean.getTodoListName());
        todoListWrapper.setTodoListElementType(todoListBean.getTodoListElementType());
        //将处理器也添加进去
        todoListWrapper.setTodoListAfterHandler(todoListBean.getTodoListAfterHandler());
        todoListWrapper.setTodoListErrorHandler(todoListBean.getTodoListErrorHandler());
        todoListWrapper.setTodoListCreateCheckHandler(todoListBean.getTodoListCreateCheckHandler());
        //将用户创建的清单添加进入容器
        todoListWrapper.setCreateType(TodoListTempleCreateType.UserCreateByCode);
        TodoListTemplateMap instance = TodoListTemplateMap.getInstance();
        instance.put(todoListBean.getTodoListName(),todoListWrapper);
    }
}
